iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
0
自我挑戰組

新手 R 語言學習紀錄系列 第 15

Day15- R語言 mapply、 rapply、 eapply

  • 分享至 

  • xImage
  •  

Day 15- mapply, rapply, eapply
(前言:內個,我只是個剛接觸程式設計的小萌新,如果內文寫的不對,還請各位大大指教 Orz)

到目前為止,我們已經學了apply家族裡的apply, lapply, sapply, vapply還有tapply函數了,接下來把比較常用的apply家族函數(mapply, rapplyeapply)全部學完 :D
看起來好像很多,但是其實剩下的函數就只是運用前面學過的觀念而已。

mapply 就像是複雜一點的sapply,因為mapply可以調整的引數又比sapply更多了。先看一下mapply的寫法:

mapply(函數, 變數名稱, MoreArgs = NULL, SIMPLIFY = TRUE/FALSE, USE.NAMES = TRUE/FALSE)

mapply 的寫法有點複雜,不過他的客製化程度又更高了(什麼東西啊)。首先在括弧裡寫上函數和資料框的變數名稱,再來寫MoreArgs引數,這個引數沒有意外的話應該都要是 = NULL,除非前面的函數有需要多餘的引數。SIMPLIFY引數的話,TRUE就表示要程式做sapply的回傳,FALSE則表示不要做簡化(也就是回傳類似lapply的結果),USE.NAMES 如果為TRUE,表示顯示欄位名稱,如果為FALSE則不顯示。

以kirbsaesthetics為例,mapply回傳結果如下:
https://ithelp.ithome.com.tw/upload/images/20191001/20120887jr3IIL8XhE.png

rapply 則是lapply的變化,寫法同樣有點複雜:

rapply(變數名稱, 函數,  classes = 指定資料型態或 “ANY”, deflt = “NULL”, how = c(“unlist”, “replace”, “list”)) 

前面兩個引數一樣為變數及欲應用的函數,第三個是class,可以指定輸出結果的資料型態,如不確定可以輸入 “ANY” 讓程式自動輸出,第四個deflt為預設結果,通常為NULL。最後how有三個小引數,unlist, replace, list。若只有 “list” 則輸出結果為列表,若同時輸入三個引數 "unlist", "replace", "list"則輸出結果與只有unlist引數一樣,請看以下結果:
https://ithelp.ithome.com.tw/upload/images/20191001/20120887eje1R1rflY.png

最後我們學eapplyeapply是讓使用者在一個環境內執行函數的一個工具,首先我們要先建立一個新的環境,就用 kirbenvironment <- new.env()就行了。

接下來,我們在這個環境中新增兩個數值向量(這次不想用太多數字了,方便就好),程式碼如下列:

kirbenvironment$ss <- c(20, 55)
kirbenvironment$tt <- c(45, 23)

這時候如果要檢視這兩個數值向量的summary(包含最大數、最小數、四分位數等資訊),我們就這樣寫:eapply(kirbenvironment, summary),輸出結果如下:
https://ithelp.ithome.com.tw/upload/images/20191001/20120887sDAsefGJQj.png

好啦,apply家族函數就差不多學到這邊了,我們要跟apply家族暫時說再見囉

明天…來學基礎繪圖吧


上一篇
Day 14- R語言 vapply、tapply
下一篇
Day 16- R語言 資料視覺化與自訂圖表 Part 1
系列文
新手 R 語言學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言